/*
 ============================================================================
 Name		: SimpleTimer.cpp
 Author	  : Den Grigorenko
 Copyright   : Copyright (c) 2008 Den123
 Description : Simple timer implementation
 ============================================================================
 */

#include "SimpleTimer.h"


CSimpleTimer::CSimpleTimer(const TInt aPriority,MSimpleTimerNotify& aNotify)
    :CActive(aPriority),iNotify(aNotify)
{
}
 
CSimpleTimer::~CSimpleTimer()
{	
    Cancel();
    iTimer.Close();
}
 
CSimpleTimer* CSimpleTimer::NewL(const TInt aPriority,MSimpleTimerNotify& aNotify)
{
    CSimpleTimer* me = new (ELeave) CSimpleTimer(aPriority,aNotify);
    CleanupStack::PushL(me);
    me->ConstructL();
    CleanupStack::Pop();
    return me;
}
 
void CSimpleTimer::ConstructL(void)
{
    CActiveScheduler::Add(this);
    iTimer.CreateLocal();
}
 
void CSimpleTimer::After(TTimeIntervalMicroSeconds32 aInterval)
{
    Cancel();
    iTimer.After(iStatus,aInterval);
    SetActive();
}
  
void CSimpleTimer::DoCancel()
{
    iTimer.Cancel();
}
 
void CSimpleTimer::RunL()
{
    iNotify.TimerExpired(this,iStatus.Int());
}


